#!/usr/bin/python
# -*- coding: UTF-8 -*-  

def defaultParam(a,b = 1):
	print(a,type(a),b,type(b))

def changeableParam(a,*b):
	print(a,type(a),b,type(b))

def keywordParam(a,**b):
	print(a,type(a),b,type(b))

def namedKeywordParam(a,*,b,c):
	print(a,type(a),b,type(b),c,type(c))

def changeableNamedKeywordParam(a,*b,c):
	print(a,type(a),b,type(b),c,type(c))

def namedKeywordWithDefaultParam(a,*,b = 'city',c):
	print(a,type(a),b,type(b),c,type(c))

def combinationParam(a,b = 'city',*c,d,**e):
	print(a,type(a),b,type(b),c,type(c),d,type(d),e,type(e))

def main():
	print("\n--------defaultParam------")
	defaultParam(1)
	defaultParam(1,2)
	print("\n--------changeableParam------")
	changeableParam(1)
	changeableParam(1,2)
	changeableParam(1,*(2,))
	changeableParam(1,*[2,])
	changeableParam(1,*{2,})
	print("\n--------keywordParam------")
	keywordParam(1)
	keywordParam(1,name = 2)
	keywordParam(1,**{"name" : 2})
	print("\n--------namedKeywordParam------")
	namedKeywordParam(1,b = 2,c = 3)
	print("\n--------changeableNamedKeywordParam------")
	changeableNamedKeywordParam(1,c = 3)
	changeableNamedKeywordParam(1,2,c = 3)
	changeableNamedKeywordParam(1,*(2,),c = 3)
	changeableNamedKeywordParam(1,*[2,],c = 3)
	changeableNamedKeywordParam(1,*{2,},c = 3)
	print("\n--------namedKeywordWithDefaultParam------")
	namedKeywordWithDefaultParam(1,c = 'city')
	namedKeywordWithDefaultParam(1,b = 'wuhan',c = 'city')
	print("\n--------combinationParam------")
	combinationParam(1,2,d = 'city')
	combinationParam(1,*(2,),d = 'city')
	combinationParam(1,*[2,],d = 'city')
	combinationParam(1,*{2,},d = 'city')
	combinationParam(1,'wuhan',2,d = 'city')
	combinationParam(1,'wuhan',2,d = 'city',city = 'beijing')
if __name__ == '__main__':
	main()